-- *****************************************************************
-- REDSTONE-L2TP-MIB
--
-- Redstone Communications Inc. Enterprise MIB
-- Layer Two Tunneling Protocol (L2TP) MIB
--
-- Copyright 2000 Redstone Communications, Incorporated.
-- All Rights Reserved.
-- *****************************************************************

REDSTONE-L2TP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE, 
    Integer32,
    Counter32,
    Gauge32,
    Unsigned32,
    IpAddress
        FROM SNMPv2-SMI

    TEXTUAL-CONVENTION,
    DisplayString, 
    RowStatus, 
    TruthValue
        FROM SNMPv2-TC

    OBJECT-GROUP, 
    MODULE-COMPLIANCE
        FROM SNMPv2-CONF

    InterfaceIndex,
    InterfaceIndexOrZero
        FROM IF-MIB

    rsMgmt
                FROM REDSTONE-SMI

    RsEnable
        FROM REDSTONE-TC;


rsL2tpMIB MODULE-IDENTITY
    LAST-UPDATED "9901100000Z"
    ORGANIZATION "Redstone Communications, Inc."
    CONTACT-INFO
        "
        Redstone Communications, Inc.
                5 Carlisle Road
        Westford MA 01886
        USA
        Tel:    +1-978-692-1999
                Email:  mib@redstonecom.com
        "
    DESCRIPTION
                "The L2TP MIB for the
                Redstone Communications Inc. enterprise."
    REVISION    "9901100000Z"
    DESCRIPTION
        "Initial revision, based in part on IETF L2TP Working Group
        draft-ietf-l2tpext-l2tp-mib-05."
    ::= { rsMgmt 35 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Textual conventions
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

RsL2tpTunnelId ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "An L2TP Tunnel ID. Implementation constraints may
        restrict the range of values actually used."
    SYNTAX      Integer32(0..65535)

RsL2tpSessionId ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "An L2TP Session ID. Implementation constraints may
        restrict the range of values actually used."
    SYNTAX      Integer32(0..65535)

RsL2tpAdminState ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The administrative state exerted on L2TP tunnels sessions at
        some scope of control.

        enabled         New tunnels/sessions may be instantiated.
        disabled        All tunnels/sessions are terminated.
        drain           No new tunnels/sessions may be instantiated,
                        but any existing tunnels/sessions may 
                        persist until they expire by other means.

        The DESCRIPTION clause of an object defined to have this syntax
        must describe the scope of control that object exerts (e.g.,
        all tunnels/sessions across the system, sessions within a single
        tunnel, etc.)."
    SYNTAX      INTEGER {
                    enabled(0),
                    disabled(1),
                    drain(2)
                }

RsL2tpTransport ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Transport type over which L2TP is carried."
    SYNTAX      INTEGER {
                    other(0),
                    udpIp(1)
                }

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed object groups
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsL2tpTraps           OBJECT IDENTIFIER  ::= { rsL2tpMIB 0 }
rsL2tpObjects         OBJECT IDENTIFIER  ::= { rsL2tpMIB 1 }
rsL2tpTrapControl     OBJECT IDENTIFIER  ::= { rsL2tpMIB 2 }
rsL2tpConformance     OBJECT IDENTIFIER  ::= { rsL2tpMIB 3 }

--
-- Major subtrees
--
rsL2tpSystem          OBJECT IDENTIFIER  ::= { rsL2tpObjects 1 }
rsL2tpDestination     OBJECT IDENTIFIER  ::= { rsL2tpObjects 2 }
rsL2tpTunnel          OBJECT IDENTIFIER  ::= { rsL2tpObjects 3 }
rsL2tpSession         OBJECT IDENTIFIER  ::= { rsL2tpObjects 4 }
rsL2tpTransport       OBJECT IDENTIFIER  ::= { rsL2tpObjects 5 }


-- ......................................................................
-- L2TP System Group
-- ......................................................................

rsL2tpSystemConfig      OBJECT IDENTIFIER   ::= { rsL2tpSystem 1 }
rsL2tpSystemStatus      OBJECT IDENTIFIER   ::= { rsL2tpSystem 2 }

--
-- L2TP System-level Configuration
--
rsL2tpSysConfigAdminState OBJECT-TYPE
    SYNTAX      RsL2tpAdminState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Exerts control over all L2TP tunnels/sessions
        in the system."
    ::= { rsL2tpSystemConfig 1 }

rsL2tpSysConfigDestructTimeout OBJECT-TYPE
    SYNTAX      Integer32(0..3600)
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The amount of time, in seconds, to preserve dynamic
        tunnels/sessions after they become inactive,
        e.g. to poll their statistics."
    ::= { rsL2tpSystemConfig 2 }

rsL2tpSysConfigIpChecksumEnable OBJECT-TYPE
    SYNTAX      RsEnable
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Enable/disable IP checksumming for tunnels with UDP/IP
        transport."
    ::= { rsL2tpSystemConfig 3 }

--
-- L2TP System-level Status and Statistics
--

rsL2tpSysStatusProtocolVersion OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(2..256))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Vector of supported L2TP protocol version and
        revision numbers. Supported versions are identified
        via a two octet pairing where the first octet indicates
        the version and the second octet contains the revision."
    ::= { rsL2tpSystemStatus 1 }

rsL2tpSysStatusVendorName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Vendor name of the L2TP protocol stack."
    ::= { rsL2tpSystemStatus 2 }

rsL2tpSysStatusFirmwareRev OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Firmware revision for the L2TP protocol stack."
    ::= { rsL2tpSystemStatus 3 }

rsL2tpSysStatusTotalDestinations OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of destination creations attempted."
    ::= { rsL2tpSystemStatus 4 }

rsL2tpSysStatusFailedDestinations OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of destination creation attempts that failed."
    ::= { rsL2tpSystemStatus 5 }

rsL2tpSysStatusActiveDestinations OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of destinations having at least one active tunnel."
    ::= { rsL2tpSystemStatus 6 }

rsL2tpSysStatusTotalTunnels OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of tunnel creations attempted."
    ::= { rsL2tpSystemStatus 7 }

rsL2tpSysStatusFailedTunnels OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of tunnel creation attempts that failed to reach
        the established state."
    ::= { rsL2tpSystemStatus 8 }

rsL2tpSysStatusFailedTunnelAuthens OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of tunnel creation attempts that failed authentication."
    ::= { rsL2tpSystemStatus 9 }

rsL2tpSysStatusActiveTunnels OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of tunnels currently established."
    ::= { rsL2tpSystemStatus 10 }

rsL2tpSysStatusTotalSessions OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of session creations attempted."
    ::= { rsL2tpSystemStatus 11 }

rsL2tpSysStatusFailedSessions OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of session creation attempts that failed
        to reach the established state."
    ::= { rsL2tpSystemStatus 12 }

rsL2tpSysStatusActiveSessions OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of sessions currently established."
    ::= { rsL2tpSystemStatus 13 }

-- ......................................................................
-- L2TP Destination Group
-- ......................................................................

rsL2tpDestConfig      OBJECT IDENTIFIER   ::= { rsL2tpDestination 1 }
rsL2tpDestStatus      OBJECT IDENTIFIER   ::= { rsL2tpDestination 2 }
rsL2tpDestStatistics  OBJECT IDENTIFIER   ::= { rsL2tpDestination 3 }

-- 
-- Destination-level Configuration
--

-- { rsL2tpDestConfig 1 } reserved for "next ifIndex" acquisition

rsL2tpDestConfigTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpDestConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP destination configuration table. Each entry
        in this table has a corresponding entry in the
        Interfaces MIB ifTable, and in rsL2tpDestStatsTable."
    ::= { rsL2tpDestConfig 2 }

rsL2tpDestConfigEntry   OBJECT-TYPE
    SYNTAX      RsL2tpDestConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Describes the configuration attributes of 
        an L2TP destination."
    INDEX { rsL2tpDestConfigIfIndex }
    ::= { rsL2tpDestConfigTable 1 }

RsL2tpDestConfigEntry ::= SEQUENCE {
    rsL2tpDestConfigIfIndex
        InterfaceIndex,
    rsL2tpDestConfigRowStatus
        RowStatus,
    rsL2tpDestConfigAdminState
        RsL2tpAdminState
    }

rsL2tpDestConfigIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same value as ifIndex for the corresponding
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpDestConfigEntry 1 }

rsL2tpDestConfigRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "An implementation may choose not to 
        support administrative configuration of 
        tunnels."
    ::= { rsL2tpDestConfigEntry 2 }

rsL2tpDestConfigAdminState  OBJECT-TYPE
    SYNTAX      RsL2tpAdminState
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The configured administrative state."
    DEFVAL { enabled }
    ::= { rsL2tpDestConfigEntry 3 }

-- 
-- Destination-level Status
--

rsL2tpDestStatusTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpDestStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP destination status table. Each entry
        in this table has a corresponding entry in the
        Interfaces MIB ifTable, and in rsL2tpDestConfigTable."
    ::= { rsL2tpDestStatus 1 }

rsL2tpDestStatusEntry   OBJECT-TYPE
    SYNTAX      RsL2tpDestStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Describes the status attributes of an L2TP destination."
    INDEX { rsL2tpDestStatusIfIndex }
    ::= { rsL2tpDestStatusTable 1 }

RsL2tpDestStatusEntry ::= SEQUENCE {
    rsL2tpDestStatusIfIndex
        InterfaceIndex,
    rsL2tpDestStatusTransport
        RsL2tpTransport,
    rsL2tpDestStatusEffectiveAdminState
        RsL2tpAdminState,
    rsL2tpDestStatusTotalTunnels
        Counter32,
    rsL2tpDestStatusFailedTunnels
        Counter32,
    rsL2tpDestStatusFailedTunnelAuthens
        Counter32,
    rsL2tpDestStatusActiveTunnels
        Gauge32,
    rsL2tpDestStatusTotalSessions
        Counter32,
    rsL2tpDestStatusFailedSessions
        Counter32,
    rsL2tpDestStatusActiveSessions
        Gauge32
    }

rsL2tpDestStatusIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same value as ifIndex for the corresponding
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpDestStatusEntry 1 }

rsL2tpDestStatusTransport OBJECT-TYPE
    SYNTAX      RsL2tpTransport
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The underlying transport over which this
        L2TP destination is carried."
    ::= { rsL2tpDestStatusEntry 2 }

rsL2tpDestStatusEffectiveAdminState  OBJECT-TYPE
    SYNTAX      RsL2tpAdminState
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The administrative state currently in effect.
        This could be the configured admin state for this
        destination, or an overriding admin state exerted from a
        higher hierarchical level (system)."
    ::= { rsL2tpDestStatusEntry 3 }

rsL2tpDestStatusTotalTunnels OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of tunnel creations attempted."
    ::= { rsL2tpDestStatusEntry 4 }

rsL2tpDestStatusFailedTunnels OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of tunnel creation attempts that failed to reach
        the established state."
    ::= { rsL2tpDestStatusEntry 5 }

rsL2tpDestStatusFailedTunnelAuthens OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of tunnel creation attempts that failed authentication."
    ::= { rsL2tpDestStatusEntry 6 }

rsL2tpDestStatusActiveTunnels OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of tunnels currently established."
    ::= { rsL2tpDestStatusEntry 7 }

rsL2tpDestStatusTotalSessions OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of session creations attempted."
    ::= { rsL2tpDestStatusEntry 8 }

rsL2tpDestStatusFailedSessions OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of session creation attempts that failed
        to reach the established state."
    ::= { rsL2tpDestStatusEntry 9 }

rsL2tpDestStatusActiveSessions OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of sessions currently established."
    ::= { rsL2tpDestStatusEntry 10 }

-- 
-- Destination-level Statistics
--

rsL2tpDestStatTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpDestStatEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP destination statistics table. Describes
        the aggregate control and payload statistics for all
        L2TP tunnels configured on each destination. Each entry
        in this table has a corresponding entry in the
        Interfaces MIB ifTable, and in rsL2tpDestConfigTable."
    ::= { rsL2tpDestStatistics 1 }

rsL2tpDestStatEntry   OBJECT-TYPE
    SYNTAX      RsL2tpDestStatEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Describes the aggregate L2TP control and payload statistics
        for all L2TP tunnels on an L2TP destination."
    INDEX { rsL2tpDestStatIfIndex }
    ::= { rsL2tpDestStatTable 1 }

RsL2tpDestStatEntry ::= SEQUENCE {
    rsL2tpDestStatIfIndex
        InterfaceIndex,
    rsL2tpDestStatCtlRecvOctets
        Counter32,
    rsL2tpDestStatCtlRecvPackets
        Counter32,
    rsL2tpDestStatCtlRecvErrors
        Counter32,
    rsL2tpDestStatCtlRecvDiscards
        Counter32,
    rsL2tpDestStatCtlSendOctets
        Counter32,
    rsL2tpDestStatCtlSendPackets
        Counter32,
    rsL2tpDestStatCtlSendErrors
        Counter32,
    rsL2tpDestStatCtlSendDiscards
        Counter32,
    rsL2tpDestStatPayRecvOctets
        Counter32,
    rsL2tpDestStatPayRecvPackets
        Counter32,
    rsL2tpDestStatPayRecvErrors
        Counter32,
    rsL2tpDestStatPayRecvDiscards
        Counter32,
    rsL2tpDestStatPaySendOctets
        Counter32,
    rsL2tpDestStatPaySendPackets
        Counter32,
    rsL2tpDestStatPaySendErrors
        Counter32,
    rsL2tpDestStatPaySendDiscards
        Counter32
    }

rsL2tpDestStatIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same value as ifIndex for the corresponding
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpDestStatEntry 1 }

rsL2tpDestStatCtlRecvOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control octets received."
    ::= { rsL2tpDestStatEntry 2 }

rsL2tpDestStatCtlRecvPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets received."
    ::= { rsL2tpDestStatEntry 3 }

rsL2tpDestStatCtlRecvErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets incurring reception errors."
    ::= { rsL2tpDestStatEntry 4 }

rsL2tpDestStatCtlRecvDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets discarded after reception."
    ::= { rsL2tpDestStatEntry 5 }

rsL2tpDestStatCtlSendOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control octets sent."
    ::= { rsL2tpDestStatEntry 6 }

rsL2tpDestStatCtlSendPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets sent."
    ::= { rsL2tpDestStatEntry 7 }

rsL2tpDestStatCtlSendErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets incurring transmission errors."
    ::= { rsL2tpDestStatEntry 8 }

rsL2tpDestStatCtlSendDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets discarded before transmission."
    ::= { rsL2tpDestStatEntry 9 }

rsL2tpDestStatPayRecvOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload octets received."
    ::= { rsL2tpDestStatEntry 10 }

rsL2tpDestStatPayRecvPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets received."
    ::= { rsL2tpDestStatEntry 11 }

rsL2tpDestStatPayRecvErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets incurring reception errors."
    ::= { rsL2tpDestStatEntry 12 }

rsL2tpDestStatPayRecvDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets discarded after reception."
    ::= { rsL2tpDestStatEntry 13 }

rsL2tpDestStatPaySendOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload octets sent."
    ::= { rsL2tpDestStatEntry 14 }

rsL2tpDestStatPaySendPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets sent."
    ::= { rsL2tpDestStatEntry 15 }

rsL2tpDestStatPaySendErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets incurring transmission errors."
    ::= { rsL2tpDestStatEntry 16 }

rsL2tpDestStatPaySendDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets discarded before transmission."
    ::= { rsL2tpDestStatEntry 17 }

-- ......................................................................
-- L2TP Tunnel Group
-- ......................................................................

rsL2tpTunnelConfig      OBJECT IDENTIFIER   ::= { rsL2tpTunnel 1 }
rsL2tpTunnelStatus      OBJECT IDENTIFIER   ::= { rsL2tpTunnel 2 }
rsL2tpTunnelStatistics  OBJECT IDENTIFIER   ::= { rsL2tpTunnel 3 }
rsL2tpTunnelMap         OBJECT IDENTIFIER   ::= { rsL2tpTunnel 4 }

-- 
-- Tunnel-level Configuration
--

-- { rsL2tpTunnelConfig 1 } reserved for "next ifIndex" acquisition

rsL2tpTunnelConfigTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpTunnelConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP tunnel configuration table. Each entry
        in this table has a corresponding entry in the
        Interfaces MIB ifTable, and in rsL2tpTunnelStatsTable."
    ::= { rsL2tpTunnelConfig 2 }

rsL2tpTunnelConfigEntry   OBJECT-TYPE
    SYNTAX      RsL2tpTunnelConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Describes the configuration attributes of 
        an L2TP tunnel."
    INDEX { rsL2tpTunnelConfigIfIndex }
    ::= { rsL2tpTunnelConfigTable 1 }

RsL2tpTunnelConfigEntry ::= SEQUENCE {
    rsL2tpTunnelConfigIfIndex
        InterfaceIndex,
    rsL2tpTunnelConfigRowStatus
        RowStatus,
    rsL2tpTunnelConfigAdminState
        RsL2tpAdminState
    }

rsL2tpTunnelConfigIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same value as ifIndex for the corresponding
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpTunnelConfigEntry 1 }

rsL2tpTunnelConfigRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "An implementation may choose not to 
        support administrative configuration of 
        tunnels."
    ::= { rsL2tpTunnelConfigEntry 2 }

rsL2tpTunnelConfigAdminState  OBJECT-TYPE
    SYNTAX      RsL2tpAdminState
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The configured administrative state."
    DEFVAL { enabled }
    ::= { rsL2tpTunnelConfigEntry 3 }

-- 
-- Tunnel-level Status and Statistics
--
rsL2tpTunnelStatusTable    OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpTunnelStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP tunnel status and statistics table. Each entry
        in this table has a corresponding entry in the Interfaces MIB
        ifTable, and in rsL2tpTunnelConfigTable."
    ::= { rsL2tpTunnelStatus 1 }

rsL2tpTunnelStatusEntry    OBJECT-TYPE
    SYNTAX      RsL2tpTunnelStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An L2TP tunnel interface stats entry."
    INDEX { rsL2tpTunnelStatusIfIndex }
    ::= { rsL2tpTunnelStatusTable 1 }

RsL2tpTunnelStatusEntry ::= SEQUENCE {
    rsL2tpTunnelStatusIfIndex
        InterfaceIndex,
    rsL2tpTunnelStatusTransport
        RsL2tpTransport,
    rsL2tpTunnelStatusLocalTunnelId
        RsL2tpTunnelId,
    rsL2tpTunnelStatusRemoteTunnelId
        RsL2tpTunnelId,
    rsL2tpTunnelStatusEffectiveAdminState
        RsL2tpAdminState,
    rsL2tpTunnelStatusState
        INTEGER,
    rsL2tpTunnelStatusInitiated
        INTEGER,
    rsL2tpTunnelStatusRemoteHostName
        DisplayString,
    rsL2tpTunnelStatusRemoteVendorName
        DisplayString,
    rsL2tpTunnelStatusRemoteFirmwareRevision
        Integer32,
    rsL2tpTunnelStatusRemoteProtocolVersion
        OCTET STRING,
    rsL2tpTunnelStatusRemoteBearerCapabilities
        INTEGER,
    rsL2tpTunnelStatusRemoteFramingCapabilities
        INTEGER,
    rsL2tpTunnelStatusRecvWindowSize
        Gauge32,
    rsL2tpTunnelStatusSendWindowSize
        Gauge32,
    rsL2tpTunnelStatusSendQueueDepth
        Gauge32,
    rsL2tpTunnelStatusRecvSeq
        Integer32,
    rsL2tpTunnelStatusRecvSeqAck
        Integer32,
    rsL2tpTunnelStatusSendSeq
        Integer32,
    rsL2tpTunnelStatusSendSeqAck
        Integer32,
    rsL2tpTunnelStatusTotalSessions
        Counter32,
    rsL2tpTunnelStatusFailedSessions
        Counter32,
    rsL2tpTunnelStatusActiveSessions
        Gauge32,
    rsL2tpTunnelStatusLastResultCode
        Integer32,
    rsL2tpTunnelStatusLastErrorCode
        Integer32,
    rsL2tpTunnelStatusLastErrorMessage
        DisplayString
    }

rsL2tpTunnelStatusIfIndex  OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same as the value of ifIndex for the corresponding 
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpTunnelStatusEntry 1 }

rsL2tpTunnelStatusTransport OBJECT-TYPE
    SYNTAX      RsL2tpTransport
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The underlying transport over which this
        L2TP tunnel is carried."
    ::= { rsL2tpTunnelStatusEntry 2 }

rsL2tpTunnelStatusLocalTunnelId OBJECT-TYPE
    SYNTAX      RsL2tpTunnelId
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The local tunnel identifier."
    ::= { rsL2tpTunnelStatusEntry 3 }

rsL2tpTunnelStatusRemoteTunnelId OBJECT-TYPE
    SYNTAX      RsL2tpTunnelId
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The remote tunnel identifier."
    ::= { rsL2tpTunnelStatusEntry 4 }

rsL2tpTunnelStatusEffectiveAdminState  OBJECT-TYPE
    SYNTAX      RsL2tpAdminState
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The administrative state currently in effect.
        This could be the configured admin state for this
        tunnel, or an overriding admin state exerted from a
        higher hierarchical level (system, destination)."
    ::= { rsL2tpTunnelStatusEntry 5 }

rsL2tpTunnelStatusState    OBJECT-TYPE
    SYNTAX      INTEGER {
                    idle(0),
                    connecting(1),
                    established(2),
                    disconnecting(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current state of the tunnel."
    ::= { rsL2tpTunnelStatusEntry 6 }

rsL2tpTunnelStatusInitiated  OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    local(1),
                    remote(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates whether the tunnel was initiated locally,
        or by the remote tunnel peer."
    ::= { rsL2tpTunnelStatusEntry 7 }

rsL2tpTunnelStatusRemoteHostName  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The host name obtained during the tunnel establishment
        phase (via the Host Name AVP) of the L2TP peer. If the
        tunnel is idle, this object should maintain its value 
        from the last time it was connected, or a zero-length
        string if no name was previously known."
    ::= { rsL2tpTunnelStatusEntry 8 }

rsL2tpTunnelStatusRemoteVendorName  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Identifies the vendor name of the peer's
        L2TP implementation. If the tunnel is idle, this
        object should maintain its value from the last time
        it was connected, of a zero-length string if no
        name was previously known."
    ::= { rsL2tpTunnelStatusEntry 9 }

rsL2tpTunnelStatusRemoteFirmwareRevision  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The tunnel peer's firmware revision number. If the
        tunnel is idle, this object should maintain its value
        from the last time it was connected, or a zero value
        if no revision was previously known."
    ::= { rsL2tpTunnelStatusEntry 10 }

rsL2tpTunnelStatusRemoteProtocolVersion  OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(2))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The protocol version and revision of the tunnel peer's
        implementation. The first octet contains the protocol version.
        The second octet contains the protocol revision."
    ::= { rsL2tpTunnelStatusEntry 11 }

rsL2tpTunnelStatusRemoteBearerCapabilities  OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    digital(1),
                    analog(2),
                    digitalAnalog(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Bearer Capabilities of the tunnel peer. If the
        tunnel is idle this object should maintain its value
        from the last time it was connected, or 'none' if not
        previously known."
    ::= { rsL2tpTunnelStatusEntry 12 }

rsL2tpTunnelStatusRemoteFramingCapabilities  OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    sync(1),
                    async(2),
                    syncAsync(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Framing Capabilities of the tunnel peer. If the tunnel
        is idle this object should maintain its value from the last
        time it was connected, or 'none' if not previously known."
    ::= { rsL2tpTunnelStatusEntry 13 }

rsL2tpTunnelStatusRecvWindowSize  OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The receive window size."
    ::= { rsL2tpTunnelStatusEntry 14 }

rsL2tpTunnelStatusSendWindowSize  OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The tunnel peer's receive window size."
    ::= { rsL2tpTunnelStatusEntry 15 }

rsL2tpTunnelStatusSendQueueDepth  OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets on transmit queue."
    ::= { rsL2tpTunnelStatusEntry 16 }

rsL2tpTunnelStatusRecvSeq  OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The next sequence number expected in a received control packet."
    ::= { rsL2tpTunnelStatusEntry 17 }

rsL2tpTunnelStatusRecvSeqAck  OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The last received sequence number that was acknowledged
        back to the tunnel peer."
    ::= { rsL2tpTunnelStatusEntry 18 }

rsL2tpTunnelStatusSendSeq  OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The next sequence number to be sent in a transmitted control packet."
    ::= { rsL2tpTunnelStatusEntry 19 }

rsL2tpTunnelStatusSendSeqAck  OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The send sequence number that the tunnel peer has acknowledged.
        The flow control state can be determined by subtracting the
        rsL2tpTunnelStatusSendSeq from rsL2tpTunnelStatusSendSeqAck and
        comparing this value to rsL2tpTunnelStatusSendWindowSize."
    ::= { rsL2tpTunnelStatusEntry 20 }

rsL2tpTunnelStatusTotalSessions  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total number of sessions that this tunnel has
        successfully connected through to its tunnel peer
        since this tunnel was created, including those that
        have since terminated."
    ::= { rsL2tpTunnelStatusEntry 21 }

rsL2tpTunnelStatusFailedSessions  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of sessions that were initiated but failed
        to reach the established phase."
    ::= { rsL2tpTunnelStatusEntry 22 }

rsL2tpTunnelStatusActiveSessions  OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current number of sessions in the established state."
    ::= { rsL2tpTunnelStatusEntry 23 }

rsL2tpTunnelStatusLastResultCode  OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The last value of the result code as described in the
        Result Code AVP which caused the tunnel to disconnect."
    ::= { rsL2tpTunnelStatusEntry 24 }

rsL2tpTunnelStatusLastErrorCode  OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The last value of the error code as described in the
        Result Code AVP which caused the tunnel to disconnect."
    ::= { rsL2tpTunnelStatusEntry 25 }

rsL2tpTunnelStatusLastErrorMessage  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The last value of the optional message as described in
        the Result Code AVP which caused the tunnel to disconnect."
    ::= { rsL2tpTunnelStatusEntry 26 }

-- 
-- Tunnel-level Statistics
--

rsL2tpTunnelStatTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpTunnelStatEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP tunnel statistics table. Describes
        the control and payload statistics for each
        L2TP tunnel. Each entry in this table has a 
        corresponding entry in the Interfaces MIB ifTable,
        and in rsL2tpTunnelConfigTable."
    ::= { rsL2tpTunnelStatistics 1 }

rsL2tpTunnelStatEntry   OBJECT-TYPE
    SYNTAX      RsL2tpTunnelStatEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Describes the L2TP control and payload statistics
        for an L2TP tunnel."
    INDEX { rsL2tpTunnelStatIfIndex }
    ::= { rsL2tpTunnelStatTable 1 }

RsL2tpTunnelStatEntry ::= SEQUENCE {
    rsL2tpTunnelStatIfIndex
        InterfaceIndex,
    rsL2tpTunnelStatCtlRecvOctets
        Counter32,
    rsL2tpTunnelStatCtlRecvPackets
        Counter32,
    rsL2tpTunnelStatCtlRecvErrors
        Counter32,
    rsL2tpTunnelStatCtlRecvDiscards
        Counter32,
    rsL2tpTunnelStatCtlSendOctets
        Counter32,
    rsL2tpTunnelStatCtlSendPackets
        Counter32,
    rsL2tpTunnelStatCtlSendErrors
        Counter32,
    rsL2tpTunnelStatCtlSendDiscards
        Counter32,
    rsL2tpTunnelStatPayRecvOctets
        Counter32,
    rsL2tpTunnelStatPayRecvPackets
        Counter32,
    rsL2tpTunnelStatPayRecvErrors
        Counter32,
    rsL2tpTunnelStatPayRecvDiscards
        Counter32,
    rsL2tpTunnelStatPaySendOctets
        Counter32,
    rsL2tpTunnelStatPaySendPackets
        Counter32,
    rsL2tpTunnelStatPaySendErrors
        Counter32,
    rsL2tpTunnelStatPaySendDiscards
        Counter32,

    rsL2tpTunnelStatCtlRecvZLB
        Counter32,
    rsL2tpTunnelStatCtlRecvOutOfSequence
        Counter32,
    rsL2tpTunnelStatCtlRecvOutOfWindow
        Counter32,
    rsL2tpTunnelStatCtlSendZLB
        Counter32,
    rsL2tpTunnelStatCtlSendRetransmits
        Counter32
    }

rsL2tpTunnelStatIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same value as ifIndex for the corresponding
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpTunnelStatEntry 1 }

rsL2tpTunnelStatCtlRecvOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control octets received."
    ::= { rsL2tpTunnelStatEntry 2 }

rsL2tpTunnelStatCtlRecvPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets received."
    ::= { rsL2tpTunnelStatEntry 3 }

rsL2tpTunnelStatCtlRecvErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets incurring reception errors."
    ::= { rsL2tpTunnelStatEntry 4 }

rsL2tpTunnelStatCtlRecvDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets discarded after reception."
    ::= { rsL2tpTunnelStatEntry 5 }

rsL2tpTunnelStatCtlSendOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control octets sent."
    ::= { rsL2tpTunnelStatEntry 6 }

rsL2tpTunnelStatCtlSendPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets sent."
    ::= { rsL2tpTunnelStatEntry 7 }

rsL2tpTunnelStatCtlSendErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets incurring transmission errors."
    ::= { rsL2tpTunnelStatEntry 8 }

rsL2tpTunnelStatCtlSendDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets discarded before transmission."
    ::= { rsL2tpTunnelStatEntry 9 }

rsL2tpTunnelStatPayRecvOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload octets received."
    ::= { rsL2tpTunnelStatEntry 10 }

rsL2tpTunnelStatPayRecvPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets received."
    ::= { rsL2tpTunnelStatEntry 11 }

rsL2tpTunnelStatPayRecvErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets incurring reception errors."
    ::= { rsL2tpTunnelStatEntry 12 }

rsL2tpTunnelStatPayRecvDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets discarded after reception."
    ::= { rsL2tpTunnelStatEntry 13 }

rsL2tpTunnelStatPaySendOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload octets sent."
    ::= { rsL2tpTunnelStatEntry 14 }

rsL2tpTunnelStatPaySendPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets sent."
    ::= { rsL2tpTunnelStatEntry 15 }

rsL2tpTunnelStatPaySendErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets incurring transmission errors."
    ::= { rsL2tpTunnelStatEntry 16 }

rsL2tpTunnelStatPaySendDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets discarded before transmission."
    ::= { rsL2tpTunnelStatEntry 17 }

-- 
-- additional granularity
--
rsL2tpTunnelStatCtlRecvZLB  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of Zero Length Body control packet acknowledgement
        packets that were received."
    ::= { rsL2tpTunnelStatEntry 18 }

rsL2tpTunnelStatCtlRecvOutOfSequence  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets not received in the
        correct sequence number order."
    ::= { rsL2tpTunnelStatEntry 19 }

rsL2tpTunnelStatCtlRecvOutOfWindow  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packets received outside the
        offered receive window."
    ::= { rsL2tpTunnelStatEntry 20 }

rsL2tpTunnelStatCtlSendZLB  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of Zero Length Body control packets sent."
    ::= { rsL2tpTunnelStatEntry 21 }

rsL2tpTunnelStatCtlSendRetransmits OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of control packet send retransmissions."
    ::= { rsL2tpTunnelStatEntry 22 }

--
-- Tunnel Mappings
--


--
-- TunnelIf/SessionId -> SessionIf Mapping
--
rsL2tpMapTifSidToSifTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpMapTifSidToSifEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table of TunnelIf/SessionId -> SessionIf mappings."
    ::= { rsL2tpTunnelMap 1 }

rsL2tpMapTifSidToSifEntry   OBJECT-TYPE
    SYNTAX      RsL2tpMapTifSidToSifEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A mapping of TunnelIf/SessionId to SessionIf."
    INDEX { rsL2tpMapTifSidToSifTunnelIfIndex, rsL2tpMapTifSidToSifLocalSessionId }
    ::= { rsL2tpMapTifSidToSifTable 1 }

RsL2tpMapTifSidToSifEntry ::= SEQUENCE {
    rsL2tpMapTifSidToSifTunnelIfIndex
        InterfaceIndex,
    rsL2tpMapTifSidToSifLocalSessionId
        RsL2tpSessionId,
    rsL2tpMapTifSidToSifSessionIfIndex
        InterfaceIndex
    }

rsL2tpMapTifSidToSifTunnelIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The ifIndex of a tunnel interface."
    ::= { rsL2tpMapTifSidToSifEntry 1 }

rsL2tpMapTifSidToSifLocalSessionId  OBJECT-TYPE
    SYNTAX      RsL2tpSessionId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A local session ID on the associated tunnel interface."
    ::= { rsL2tpMapTifSidToSifEntry 2 }

rsL2tpMapTifSidToSifSessionIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The ifIndex of the session interface identified by
        this entry's Tunnel ifIndex and local Session Id pair."
    ::= { rsL2tpMapTifSidToSifEntry 3 }

--
-- Tunnel ID -> Tunnel If
--
rsL2tpMapTidToTifTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpMapTidToTifEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Map L2TP tunnel IDs to tunnel interfaces."
    ::= { rsL2tpTunnelMap 2 }

rsL2tpMapTidToTifEntry OBJECT-TYPE
    SYNTAX      RsL2tpMapTidToTifEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A mapping of L2TP tunnel ID to tunnel interface."
    INDEX { rsL2tpMapTidToTifLocalTunnelId }
    ::= { rsL2tpMapTidToTifTable 1 }

RsL2tpMapTidToTifEntry ::= SEQUENCE {
    rsL2tpMapTidToTifLocalTunnelId
        RsL2tpTunnelId,
    rsL2tpMapTidToTifIfIndex
        InterfaceIndex
    }

rsL2tpMapTidToTifLocalTunnelId OBJECT-TYPE
    SYNTAX      RsL2tpTunnelId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A local tunnel identifier."
    ::= { rsL2tpMapTidToTifEntry 1 }

rsL2tpMapTidToTifIfIndex  OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The ifIndex of the tunnel interface having the associated
        tunnel identifier."
    ::= { rsL2tpMapTidToTifEntry 2 }

-- ......................................................................
-- L2TP Session Group
-- ......................................................................

rsL2tpSessionConfig     OBJECT IDENTIFIER   ::= { rsL2tpSession 1 }
rsL2tpSessionStatus     OBJECT IDENTIFIER   ::= { rsL2tpSession 2 }
rsL2tpSessionStatistics OBJECT IDENTIFIER   ::= { rsL2tpSession 3 }


--
-- Session-level Configuration
--

-- { rsL2tpSessionConfig 1 } reserved for "next ifIndex" acquisition

rsL2tpSessionConfigTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpSessionConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP session configuration table. Each entry
        in this table has a corresponding entry in the
        Interfaces MIB ifTable, and in rsL2tpSessionStatsTable."
    ::= { rsL2tpSessionConfig 2 }

rsL2tpSessionConfigEntry   OBJECT-TYPE
    SYNTAX      RsL2tpSessionConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Describes the configuration attributes of 
        an L2TP session."
    INDEX { rsL2tpSessionConfigIfIndex }
    ::= { rsL2tpSessionConfigTable 1 }

RsL2tpSessionConfigEntry ::= SEQUENCE {
    rsL2tpSessionConfigIfIndex
        InterfaceIndex,
    rsL2tpSessionConfigRowStatus
        RowStatus,
    rsL2tpSessionConfigAdminState
        RsL2tpAdminState
    }

rsL2tpSessionConfigIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same value as ifIndex for the corresponding
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpSessionConfigEntry 1 }

rsL2tpSessionConfigRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "An implementation may choose not to 
        support administrative configuration of 
        tunnels."
    ::= { rsL2tpSessionConfigEntry 2 }

rsL2tpSessionConfigAdminState  OBJECT-TYPE
    SYNTAX      RsL2tpAdminState
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The configured administrative state."
    DEFVAL { enabled }
    ::= { rsL2tpSessionConfigEntry 3 }


--
-- L2TP Session-level Status and Statistics
--
rsL2tpSessionStatusTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpSessionStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP session status and statistics table."
    ::= { rsL2tpSessionStatus 1 }

rsL2tpSessionStatusEntry   OBJECT-TYPE
    SYNTAX      RsL2tpSessionStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An L2TP session interface status and statistics entry."
    INDEX { rsL2tpSessionStatusIfIndex }
    ::= { rsL2tpSessionStatusTable 1 }

RsL2tpSessionStatusEntry ::= SEQUENCE {
    rsL2tpSessionStatusIfIndex
        InterfaceIndex,
    rsL2tpSessionStatusLacPppIfIndex
        InterfaceIndexOrZero,
    rsL2tpSessionStatusLocalSessionId
        RsL2tpSessionId,
    rsL2tpSessionStatusRemoteSessionId
        RsL2tpSessionId,
    rsL2tpSessionStatusUserName
        DisplayString,
    rsL2tpSessionStatusEffectiveAdminState
        RsL2tpAdminState,
    rsL2tpSessionStatusState
        INTEGER,
    rsL2tpSessionStatusCallType
        INTEGER,
    rsL2tpSessionStatusCallSerialNumber
        Integer32,
    rsL2tpSessionStatusTxConnectSpeed
        Integer32,
    rsL2tpSessionStatusRxConnectSpeed
        Integer32,
    rsL2tpSessionStatusCallBearerType
        INTEGER,
    rsL2tpSessionStatusFramingType
        INTEGER,
    rsL2tpSessionStatusPhysChanId
        Integer32,
    rsL2tpSessionStatusDnis
        DisplayString,
    rsL2tpSessionStatusClid
        DisplayString,
    rsL2tpSessionStatusSubAddress
        DisplayString,
    rsL2tpSessionStatusPrivateGroupId
        DisplayString,
    rsL2tpSessionStatusProxyLcp
        TruthValue,
    rsL2tpSessionStatusAuthMethod
        INTEGER,
    rsL2tpSessionStatusSequencingState
        INTEGER,
    rsL2tpSessionStatusSendSeq
        Integer32,
    rsL2tpSessionStatusRecvSeq
        Integer32
    }

rsL2tpSessionStatusIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The ifIndex of an L2TP session interface."
    ::= { rsL2tpSessionStatusEntry 1 }

rsL2tpSessionStatusLacPppIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndexOrZero
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "For pass-through PPP sessions (conventional LAC), 
        the ifIndex of an associated local PPP interface through
        which the remote LAC client was connected. If unknown,
        this object contains a value of zero.

        For locally originated PPP sessions (LNS-like), this
        object has a value of zero."
    ::= { rsL2tpSessionStatusEntry 2 }

rsL2tpSessionStatusLocalSessionId  OBJECT-TYPE
    SYNTAX      RsL2tpSessionId
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The local session ID for the session."
    ::= { rsL2tpSessionStatusEntry 3 }

rsL2tpSessionStatusRemoteSessionId  OBJECT-TYPE
    SYNTAX      RsL2tpSessionId
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The remote session ID for the session."
    ::= { rsL2tpSessionStatusEntry 4 }

rsL2tpSessionStatusUserName  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The peer session name on this interface, typically 
        the login name of the remote user. If the user name 
        is unknown this object will contain a zero-length string."
    ::= { rsL2tpSessionStatusEntry 5 }

rsL2tpSessionStatusEffectiveAdminState  OBJECT-TYPE
    SYNTAX      RsL2tpAdminState
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The administrative state currently in effect.
        This could be the configured admin state for this
        session, or an overriding admin state exerted from a
        higher hierarchical level (system, destination, tunnel)."
    ::= { rsL2tpSessionStatusEntry 6 }

rsL2tpSessionStatusState   OBJECT-TYPE
    SYNTAX      INTEGER {
                    idle(0),
                    connecting(1),
                    established(2),
                    disconnecting(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current state of the session."
    ::= { rsL2tpSessionStatusEntry 7 }

rsL2tpSessionStatusCallType  OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    lacIncoming(1),
                    lnsIncoming(2),
                    lacOutgoing(3),
                    lnsOutgoing(4)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of call and role this tunnel peer is 
        providing for this session. For example, lacIncoming(1)
        indicates this tunnel peer is acting as a LAC and
        generated a Incoming-Call-Request to the tunnel
        peer (the LNS). Note that tunnel peers can be
        both LAC and LNS simultaneously."
    ::= { rsL2tpSessionStatusEntry 8 }

rsL2tpSessionStatusCallSerialNumber  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The serial number assigned to this  session."
    ::= { rsL2tpSessionStatusEntry 9 }

rsL2tpSessionStatusTxConnectSpeed  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The last known transmit baud rate for this session."
    ::= { rsL2tpSessionStatusEntry 10 }

rsL2tpSessionStatusRxConnectSpeed  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The last known receive baud rate for this session."
    ::= { rsL2tpSessionStatusEntry 11 }

rsL2tpSessionStatusCallBearerType    OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    digital(1),
                    analog(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The bearer type of this session."
    ::= { rsL2tpSessionStatusEntry 12 }

rsL2tpSessionStatusFramingType  OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    sync(1),
                    async(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The framing type of this session."
    ::= { rsL2tpSessionStatusEntry 13 }

rsL2tpSessionStatusPhysChanId   OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The physical channel identifier for the session.
        
        For pass-through PPP sessions, typically the ifIndex
        of the access interface lying below the PPP interface
        identified by rsL2tpSessionStatusLacPppIfIndex."
    ::= { rsL2tpSessionStatusEntry 14 }

rsL2tpSessionStatusDnis    OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Dialed Number Information String that the LAC
        obtained from the network for the session. If no DNIS was
        provided, a zero-length string will be returned."
    ::= { rsL2tpSessionStatusEntry 15 }

rsL2tpSessionStatusClid    OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Calling Line ID that the LAC obtained from the 
        network for the session. If no CLID was provided, a
        zero-length string will be returned."
    ::= { rsL2tpSessionStatusEntry 16 }

rsL2tpSessionStatusSubAddress  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The SubAddress that the LAC obtained from the network
        for the session. If no SubAddress was provided, a
        zero-length string will be returned."
    ::= { rsL2tpSessionStatusEntry 17 }

rsL2tpSessionStatusPrivateGroupId  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Private Group Identifier used for this tunneled session.
        If no Private Group Identifier was provided, a zero-length 
        string will be returned."
    ::= { rsL2tpSessionStatusEntry 18 }

rsL2tpSessionStatusProxyLcp  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates whether the LAC performed proxy LCP
        for this session."
    ::= { rsL2tpSessionStatusEntry 19 }

rsL2tpSessionStatusAuthMethod  OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    pppChap(1),
                    pppPap(2),
                    pppMsChap(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The proxy authentication method employed by the LAC for 
        the session. If rsL2tpSessionProxyLcp is false(2) this 
        object reports a value of 'none' and should be ignored."
    ::= { rsL2tpSessionStatusEntry 20 }

rsL2tpSessionStatusSequencingState  OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    remote(1),
                    local(2),
                    both(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates which tunnel peers have requested payload sequencing."
    ::= { rsL2tpSessionStatusEntry 21 }

rsL2tpSessionStatusSendSeq OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The next send sequence number."
    ::= { rsL2tpSessionStatusEntry 22 }

rsL2tpSessionStatusRecvSeq OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The next receive sequence number expected."
    ::= { rsL2tpSessionStatusEntry 23 }


--
-- L2TP Session-level Statistics
--
rsL2tpSessionStatTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpSessionStatEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP session statistics table."
    ::= { rsL2tpSessionStatistics 1 }

rsL2tpSessionStatEntry   OBJECT-TYPE
    SYNTAX      RsL2tpSessionStatEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An L2TP session interface statistics entry."
    INDEX { rsL2tpSessionStatIfIndex }
    ::= { rsL2tpSessionStatTable 1 }

RsL2tpSessionStatEntry ::= SEQUENCE {
    rsL2tpSessionStatIfIndex
        InterfaceIndex,
    rsL2tpSessionStatPayRecvOctets
        Counter32,
    rsL2tpSessionStatPayRecvPackets
        Counter32,
    rsL2tpSessionStatPayRecvErrors
        Counter32,
    rsL2tpSessionStatPayRecvDiscards
        Counter32,
    rsL2tpSessionStatPaySendOctets
        Counter32,
    rsL2tpSessionStatPaySendPackets
        Counter32,
    rsL2tpSessionStatPaySendErrors
        Counter32,
    rsL2tpSessionStatPaySendDiscards
        Counter32,

    rsL2tpSessionStatRecvOutOfSequence
        Counter32,
    rsL2tpSessionStatResequencingTimeouts
        Counter32
    }

rsL2tpSessionStatIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The ifIndex of an L2TP session interface."
    ::= { rsL2tpSessionStatEntry 1 }

rsL2tpSessionStatPayRecvOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload octets received."
    ::= { rsL2tpSessionStatEntry 2 }

rsL2tpSessionStatPayRecvPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets received."
    ::= { rsL2tpSessionStatEntry 3 }

rsL2tpSessionStatPayRecvErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets incurring reception errors."
    ::= { rsL2tpSessionStatEntry 4 }

rsL2tpSessionStatPayRecvDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets discarded after reception."
    ::= { rsL2tpSessionStatEntry 5 }

rsL2tpSessionStatPaySendOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload octets sent."
    ::= { rsL2tpSessionStatEntry 6 }

rsL2tpSessionStatPaySendPackets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets sent."
    ::= { rsL2tpSessionStatEntry 7 }

rsL2tpSessionStatPaySendErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets incurring transmission errors."
    ::= { rsL2tpSessionStatEntry 8 }

rsL2tpSessionStatPaySendDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of payload packets discarded before transmission."
    ::= { rsL2tpSessionStatEntry 9 }

--
-- other
--
rsL2tpSessionStatRecvOutOfSequence  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of packets received out of sequence."
    ::= { rsL2tpSessionStatEntry 10 }

rsL2tpSessionStatResequencingTimeouts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of reassembly timeouts that have occurred."
    ::= { rsL2tpSessionStatEntry 11 }


-- ......................................................................
-- L2TP Transport Group
-- ......................................................................

--
-- UDP/IP Transport
--
rsL2tpTransportUdpIp        OBJECT IDENTIFIER   ::= { rsL2tpTransport 1 }
rsL2tpUdpIpSystem           OBJECT IDENTIFIER   ::= { rsL2tpTransportUdpIp 1 }
rsL2tpUdpIpDestination      OBJECT IDENTIFIER   ::= { rsL2tpTransportUdpIp 2 }
rsL2tpUdpIpTunnel           OBJECT IDENTIFIER   ::= { rsL2tpTransportUdpIp 3 }
rsL2tpUdpIpSession          OBJECT IDENTIFIER   ::= { rsL2tpTransportUdpIp 4 }

-- 
-- UDP/IP Destination
--
rsL2tpUdpIpDestTable   OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpUdpIpDestEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP UDP/IP destination table. Reports the
        UDP/IP characteristics of a L2TP UDP/IP destination.

        A L2TP UDP/IP destination is associated with a local
        router, a local IP address,  and with a remote IP address
        for the L2TP peer. More specific UDP/IP detail per tunnel
        is reported in the rsL2tpUdpIpTunnelTable."
    ::= { rsL2tpUdpIpDestination 1 }

rsL2tpUdpIpDestEntry   OBJECT-TYPE
    SYNTAX      RsL2tpUdpIpDestEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Describes the UDP/IP attributes of an L2TP destination."
    INDEX { rsL2tpUdpIpDestIfIndex }
    ::= { rsL2tpUdpIpDestTable 1 }

RsL2tpUdpIpDestEntry ::= SEQUENCE {
    rsL2tpUdpIpDestIfIndex
        InterfaceIndex,
    rsL2tpUdpIpDestRouterIndex
        Unsigned32,
    rsL2tpUdpIpDestLocalAddress
        IpAddress,
    rsL2tpUdpIpDestRemoteAddress
        IpAddress
    }

rsL2tpUdpIpDestIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same value as ifIndex for the corresponding
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpUdpIpDestEntry 1 }

rsL2tpUdpIpDestRouterIndex  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of an entry in the rsRouterTable
        for the local router with which this L2TP
        destination interface is associated."
    ::= { rsL2tpUdpIpDestEntry 2 }

rsL2tpUdpIpDestLocalAddress  OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This L2TP destination's local IP address."
    ::= { rsL2tpUdpIpDestEntry 3 }

rsL2tpUdpIpDestRemoteAddress  OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The IP address of the remote L2TP endpoint."
    ::= { rsL2tpUdpIpDestEntry 4 }


--
-- UDP/IP Tunnel
--
rsL2tpUdpIpTunnelTable    OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsL2tpUdpIpTunnelEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The L2TP UDP/IP tunnel table. Reports the
        UDP/IP characteristics of L2TP UDP/IP tunnels.

        A L2TP UDP/IP tunnel is defined in terms of the
        local and remote IP addresses and UDP ports."
    ::= { rsL2tpUdpIpTunnel 1 }

rsL2tpUdpIpTunnelEntry    OBJECT-TYPE
    SYNTAX      RsL2tpUdpIpTunnelEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An L2TP UDP/IP tunnel entry."
    INDEX { rsL2tpUdpIpTunnelIfIndex }
    ::= { rsL2tpUdpIpTunnelTable 1 }

RsL2tpUdpIpTunnelEntry ::= SEQUENCE {
    rsL2tpUdpIpTunnelIfIndex
        InterfaceIndex,
    rsL2tpUdpIpTunnelRouterIndex
        Unsigned32,
    rsL2tpUdpIpTunnelLocalAddress
        IpAddress,
    rsL2tpUdpIpTunnelLocalPort
        Integer32,
    rsL2tpUdpIpTunnelRemoteAddress
        IpAddress,
    rsL2tpUdpIpTunnelRemotePort
        Integer32
    }

rsL2tpUdpIpTunnelIfIndex  OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Same as the value of ifIndex for the corresponding 
        entry in Interfaces MIB ifTable."
    ::= { rsL2tpUdpIpTunnelEntry 1 }

rsL2tpUdpIpTunnelRouterIndex  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of an entry in the rsRouterTable
        for the local router with which this L2TP
        tunnel interface is associated."
    ::= { rsL2tpUdpIpTunnelEntry 2 }

rsL2tpUdpIpTunnelLocalAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The local IP address for this UDP/IP tunnel."
    ::= { rsL2tpUdpIpTunnelEntry 3 }

rsL2tpUdpIpTunnelLocalPort OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The local UDP port for this UDP/IP tunnel."
    ::= { rsL2tpUdpIpTunnelEntry 4 }

rsL2tpUdpIpTunnelRemoteAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The remote IP address for this UDP/IP tunnel."
    ::= { rsL2tpUdpIpTunnelEntry 5 }

rsL2tpUdpIpTunnelRemotePort OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The remote UDP port for this UDP/IP tunnel."
    ::= { rsL2tpUdpIpTunnelEntry 6 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- conformance information
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsL2tpGroups      OBJECT IDENTIFIER ::= { rsL2tpConformance 1 }
rsL2tpCompliances OBJECT IDENTIFIER ::= { rsL2tpConformance 2 }

--
-- compliance statements
--

rsL2tpCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for SNMPv2 entities
        which implement the L2TP MIB."

    MODULE          -- this module

    -- unconditionally mandatory groups
    MANDATORY-GROUPS {
        rsL2tpConfigGroup,
        rsL2tpStatusGroup,
        rsL2tpStatGroup,
        rsL2tpMapGroup
    }
    ::= { rsL2tpCompliances 1 }

-- units of conformance

rsL2tpConfigGroup OBJECT-GROUP
    OBJECTS {
        rsL2tpSysConfigAdminState,
        rsL2tpSysConfigDestructTimeout,
        rsL2tpSysConfigIpChecksumEnable,

        rsL2tpDestConfigRowStatus,
        rsL2tpDestConfigAdminState,

        rsL2tpTunnelConfigRowStatus,
        rsL2tpTunnelConfigAdminState,
        
        rsL2tpSessionConfigRowStatus,
        rsL2tpSessionConfigAdminState
    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing configuration
        information of the L2TP protocol, tunnels and sessions."
    ::= { rsL2tpGroups 1 }

rsL2tpStatusGroup OBJECT-GROUP
    OBJECTS {
        rsL2tpSysStatusProtocolVersion,
        rsL2tpSysStatusVendorName,
        rsL2tpSysStatusFirmwareRev,
        rsL2tpSysStatusTotalDestinations,
        rsL2tpSysStatusFailedDestinations,
        rsL2tpSysStatusActiveDestinations,
        rsL2tpSysStatusTotalTunnels,
        rsL2tpSysStatusFailedTunnels,
        rsL2tpSysStatusFailedTunnelAuthens,
        rsL2tpSysStatusActiveTunnels,
        rsL2tpSysStatusTotalSessions,
        rsL2tpSysStatusFailedSessions,
        rsL2tpSysStatusActiveSessions,

        rsL2tpDestStatusEffectiveAdminState,
        rsL2tpDestStatusTotalTunnels,
        rsL2tpDestStatusFailedTunnels,
        rsL2tpDestStatusFailedTunnelAuthens,
        rsL2tpDestStatusActiveTunnels,
        rsL2tpDestStatusTotalSessions,
        rsL2tpDestStatusFailedSessions,
        rsL2tpDestStatusActiveSessions,

        rsL2tpTunnelStatusEffectiveAdminState,
        rsL2tpTunnelStatusLocalTunnelId,
        rsL2tpTunnelStatusRemoteTunnelId,
        rsL2tpTunnelStatusState,
        rsL2tpTunnelStatusInitiated,
        rsL2tpTunnelStatusRemoteHostName,
        rsL2tpTunnelStatusRemoteVendorName,
        rsL2tpTunnelStatusRemoteFirmwareRevision,
        rsL2tpTunnelStatusRemoteProtocolVersion,
        rsL2tpTunnelStatusRemoteBearerCapabilities,
        rsL2tpTunnelStatusRemoteFramingCapabilities,
        rsL2tpTunnelStatusRecvWindowSize,
        rsL2tpTunnelStatusSendWindowSize,
        rsL2tpTunnelStatusSendQueueDepth,
        rsL2tpTunnelStatusRecvSeq,
        rsL2tpTunnelStatusRecvSeqAck,
        rsL2tpTunnelStatusSendSeq,
        rsL2tpTunnelStatusSendSeqAck,
        rsL2tpTunnelStatusTotalSessions,
        rsL2tpTunnelStatusFailedSessions,
        rsL2tpTunnelStatusActiveSessions,
        rsL2tpTunnelStatusLastResultCode,
        rsL2tpTunnelStatusLastErrorCode,
        rsL2tpTunnelStatusLastErrorMessage,

        rsL2tpSessionStatusLacPppIfIndex,
        rsL2tpSessionStatusLocalSessionId,
        rsL2tpSessionStatusRemoteSessionId,
        rsL2tpSessionStatusUserName,
        rsL2tpSessionStatusState,
        rsL2tpSessionStatusCallType,
        rsL2tpSessionStatusCallSerialNumber,
        rsL2tpSessionStatusTxConnectSpeed,
        rsL2tpSessionStatusRxConnectSpeed,
        rsL2tpSessionStatusCallBearerType,
        rsL2tpSessionStatusFramingType,
        rsL2tpSessionStatusPhysChanId,
        rsL2tpSessionStatusDnis,
        rsL2tpSessionStatusClid,
        rsL2tpSessionStatusSubAddress,
        rsL2tpSessionStatusPrivateGroupId,
        rsL2tpSessionStatusProxyLcp,
        rsL2tpSessionStatusAuthMethod,
        rsL2tpSessionStatusSequencingState,
        rsL2tpSessionStatusSendSeq,
        rsL2tpSessionStatusRecvSeq
    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing status
        of the L2TP protocol at the system, destination,
        tunnel, and session levels."
    ::= { rsL2tpGroups 2 }

rsL2tpStatGroup OBJECT-GROUP
    OBJECTS {
        rsL2tpDestStatCtlRecvOctets,
        rsL2tpDestStatCtlRecvPackets,
        rsL2tpDestStatCtlRecvErrors,
        rsL2tpDestStatCtlRecvDiscards,
        rsL2tpDestStatCtlSendOctets,
        rsL2tpDestStatCtlSendPackets,
        rsL2tpDestStatCtlSendErrors,
        rsL2tpDestStatCtlSendDiscards,
        rsL2tpDestStatPayRecvOctets,
        rsL2tpDestStatPayRecvPackets,
        rsL2tpDestStatPayRecvErrors,
        rsL2tpDestStatPayRecvDiscards,
        rsL2tpDestStatPaySendOctets,
        rsL2tpDestStatPaySendPackets,
        rsL2tpDestStatPaySendErrors,
        rsL2tpDestStatPaySendDiscards,

        rsL2tpTunnelStatCtlRecvOctets,
        rsL2tpTunnelStatCtlRecvPackets,
        rsL2tpTunnelStatCtlRecvErrors,
        rsL2tpTunnelStatCtlRecvDiscards,
        rsL2tpTunnelStatCtlSendOctets,
        rsL2tpTunnelStatCtlSendPackets,
        rsL2tpTunnelStatCtlSendErrors,
        rsL2tpTunnelStatCtlSendDiscards,
        rsL2tpTunnelStatPayRecvOctets,
        rsL2tpTunnelStatPayRecvPackets,
        rsL2tpTunnelStatPayRecvErrors,
        rsL2tpTunnelStatPayRecvDiscards,
        rsL2tpTunnelStatPaySendOctets,
        rsL2tpTunnelStatPaySendPackets,
        rsL2tpTunnelStatPaySendErrors,
        rsL2tpTunnelStatPaySendDiscards,
        rsL2tpTunnelStatCtlRecvZLB,
        rsL2tpTunnelStatCtlRecvOutOfSequence,
        rsL2tpTunnelStatCtlRecvOutOfWindow,
        rsL2tpTunnelStatCtlSendZLB,
        rsL2tpTunnelStatCtlSendRetransmits,

        rsL2tpSessionStatPayRecvOctets,
        rsL2tpSessionStatPayRecvPackets,
        rsL2tpSessionStatPayRecvErrors,
        rsL2tpSessionStatPayRecvDiscards,
        rsL2tpSessionStatPaySendOctets,
        rsL2tpSessionStatPaySendPackets,
        rsL2tpSessionStatPaySendErrors,
        rsL2tpSessionStatPaySendDiscards,
        rsL2tpSessionStatRecvOutOfSequence,
        rsL2tpSessionStatResequencingTimeouts
    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing statistics
        of the L2TP protocol at the destination,
        tunnel, and session levels."
    ::= { rsL2tpGroups 3 }

rsL2tpMapGroup OBJECT-GROUP
    OBJECTS {
        rsL2tpMapTifSidToSifSessionIfIndex,
        rsL2tpMapTidToTifIfIndex
    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing mapping
        associations among L2TP components."
    ::= { rsL2tpGroups 4 }

rsL2tpUdpIpGroup OBJECT-GROUP
    OBJECTS {
        rsL2tpUdpIpDestRouterIndex,
        rsL2tpUdpIpDestLocalAddress,
        rsL2tpUdpIpDestRemoteAddress,

        rsL2tpUdpIpTunnelRouterIndex,
        rsL2tpUdpIpTunnelLocalAddress,
        rsL2tpUdpIpTunnelLocalPort,
        rsL2tpUdpIpTunnelRemoteAddress,
        rsL2tpUdpIpTunnelRemotePort
    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing UDP/IP
        transport information for L2TP components."
    ::= { rsL2tpGroups 5 }

END